//
// Created by mac on 2023/12/17.
//

class Solution
{
public:
    int totalFruit(vector<int>& fruits)
    {
        // 1、初始化
        int ans = INT_MIN;
        unordered_map<int, int> hash; // <水果类型， 水果数量>
        // 2、滑动窗口
        for(int left = 0, right = 0; right < fruits.size(); ++right)
        {
            // 进窗口
            int in = fruits[right];
            ++hash[in];
            // 判断
            while(hash.size() > 2)
            {
                // 出窗口
                int out = fruits[left++];
                if(--hash[out] == 0) hash.erase(out);
            }
            // 更新结果
            ans = max(ans, right - left + 1);
        }
        // 返回值
        return ans;
    }
};